﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using NHibernate.Criterion;
using bolsatrabajo.Dominio.NHIBERNATE;

namespace bolsatrabajo.Persistencia.NHIBERNATE
{
    public class PostulacionNH : MaestroNH<Postulacion, Int32>, IPostulacionNH
    {
        public ICollection<Postulacion> ListarPostulacionesxPostulante(String xcorreopostulante)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                var postulaciones = sesion
                    .CreateCriteria(typeof(Postulacion))
                    .Add(Restrictions.Eq("Postulante.Correo", xcorreopostulante))
                    .List<Postulacion>();
                return postulaciones;
            }
        }
        public ICollection<Postulacion> ListarPostulacionesxAviso(Int32 idaviso)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                var postulaciones = sesion
                    .CreateCriteria(typeof(Postulacion))
                    .Add(Restrictions.Eq("Aviso.Id_Aviso", idaviso))
                    .List<Postulacion>();
                return postulaciones;
            }
        }
        public Postulacion ListarxAvisosyPostulacion(Int32 IdAviso, Int32 IdPostulacion)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                Postulacion xpostulacion = sesion
                    .CreateCriteria(typeof(Postulacion))
                    .Add(Restrictions.Eq("Aviso.Id_Aviso", IdAviso))
                    .Add(Restrictions.Eq("Id_Postulacion", IdPostulacion))
                    .UniqueResult<Postulacion>();
                return xpostulacion;
            }
        }
        public Postulacion ConsultarPostulacionGanadoraxAviso(Int32 IdAviso)
        {
            using (ISession sesion = NHibernateHelper.AbrirSesion())
            {
                Postulacion xpostulacion = sesion
                    .CreateCriteria(typeof(Postulacion))
                    .Add(Restrictions.Eq("Aviso.Id_Aviso", IdAviso))
                    .Add(Restrictions.Eq("Seleccionado", true))
                    .UniqueResult<Postulacion>();
                return xpostulacion;
            }
        }
    }
}